package io;

import java.io.*;
import java.nio.charset.StandardCharsets;

/**
 * 缓冲字符流------最常用的读写字符串的流
 * 是一组高级流，并且是字符流
 * 内部维护一个默认8KB(8192)长度的char数组，还是以块读写形式读写字符以提高读写效率
 * BufferedWriter和BufferedReader：缓冲字符流
 */
public class PWDemo {
    public static void main(String[] args) throws IOException {
        //完整写法
        FileOutputStream fos = new FileOutputStream("pw.txt");//文件流（低级流）
        OutputStreamWriter osw = new OutputStreamWriter(fos, StandardCharsets.UTF_8);//转换流（高级流）
        BufferedWriter bw = new BufferedWriter(osw);//缓冲字符流（高级流）
        PrintWriter pw = new PrintWriter(bw);//行写入流（高级流）
        pw.println("长亭外，古道边，芳草碧连天。晚风拂柳笛声残，夕阳山外山。");
        pw.println("天之涯，地之角，知交半零落。 一瓢浊酒尽馀欢，今宵别梦寒。");
        System.out.println("写出完毕");
        pw.close();

        /*
        //最常用写入字符串的方式：
        底层连接了BufferedWriter,OutputStream,FileOutputStream
        PrintWriter pw = new PrintWriter("pw.txt");//行写入流（高级流）
        pw.println("长亭外，古道边，芳草碧连天。晚风拂柳笛声残，夕阳山外山。");
        pw.println("天之涯，地之角，知交半零落。 一瓢浊酒尽馀欢，今宵别梦寒。");
        System.out.println("写出完毕");
        pw.close();

         */

        /*
        FileOutputStream fos = new FileOutputStream("pw.txt");//文件流（低级流）
        OutputStreamWriter osw = new OutputStreamWriter(fos, StandardCharsets.UTF_8);//转换流（高级流）
        BufferedWriter bw = new BufferedWriter(osw);//缓冲字符流（高级流）
        bw.write("天之涯，海之角");
        bw.write("，知交半零落");
        bw.write("，一壶浊酒尽馀欢，今宵别梦寒。");
        System.out.println("写出成功");
        bw.close();//先flush(),再关闭当前流
         */
    }
}
